#ifndef GROUPMODEL_H
#define GROUPMODEL_H

#include "group.hpp"
#include <string>
#include <vector>

using namespace std;

// 定义角色常量
enum class Role
{
    CREATOR = 1, // 群主
    ADMIN,       // 群常理员
    NORMAL,      // 普通成员
    GUEST        // 访客
};

inline std::string roleToString(Role role)
{
    switch (role)
    {
    case Role::CREATOR:
        return "CREATOR";
    case Role::ADMIN:
        return "ADMIN";
    case Role::NORMAL:
        return "NORMAL";
    case Role::GUEST:
        return "GUEST";

    default:
        return "UNKNOWN";
    }
}

// 维护群组信息的操作接口方法
class GroupModel
{
public:
    GroupModel() = default;
    ~GroupModel() = default;
    // 创建群组
    bool createGroup(Group &group);
    // 加入群组
    void addGroup(int userid, int groupid, std::string role);
    // 查询用户所在的群组信息
    std::vector<Group> queryGroups(int userid);
    // 通过groupid查询群组用户id列表, 除userid自己， 用户群聊天业务给群组其他成员群发消息
    std::vector<int> queryGroupUsers(int userid, int groupid);
};

#endif